package com.example.web.entity;

import java.util.List;

import javax.validation.constraints.NotNull;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.Singular;
import lombok.ToString;

/**
 * lomBok 插件很好用 注解很多
 * 下面是一些注解和作用
 * 
 * @NonNull : 让你不在担忧并且爱上NullPointerException
 * @CleanUp : 自动资源管理：不用再在finally中添加资源的close方法
 * @Setter/@Getter : 自动生成set和get方法
 * @ToString : 自动生成toString方法
 * @EqualsAndHashcode : 从对象的字段中生成hashCode和equals的实现
 * @NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor 自动生成构造方法
 * @Data : 自动生成set/get方法，toString方法，equals方法，hashCode方法，不带参数的构造方法
 * @Value : 用于注解final类
 * @Builder : 产生复杂的构建器api类
 * @SneakyThrows : 异常处理（谨慎使用）
 * @Synchronized : 同步方法安全的转化 @Getter(lazy=true) 
 * @Slf4j : 输出及日志打印
 *
 * lombok插件推荐的用法也就是两个地方
 * 1.自动生成 实体对象的构造方法，get，set方法等其他
 * 2.日志可以很好的构建系统
 *
 */

@Setter
@Getter
@ToString
@EqualsAndHashCode
@NoArgsConstructor
public class User {

	@NotNull(message = "primary is not null")
	private Long id;

	private String name;

	private String sex;
	@Singular
	private List<Group> Groups;
}
